@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
echo =========================================
echo    GMCM 2025 批量运行剩余算例
echo =========================================
echo 说明: 快速测试模式 (减少迭代次数)
echo 输出目录: result-all
echo 将要运行: FlashAttention_Case0, FlashAttention_Case1, Matmul_Case0
echo 跳过原因: 
echo   - Conv_Case0: 已有结果
echo   - Conv_Case1: 36K节点，运行时间过长
echo   - Matmul_Case1: 30K节点，运行时间过长
echo.

REM 设置算例列表 (跳过已完成和大算例)
set cases=FlashAttention_Case0 FlashAttention_Case1 Matmul_Case0

REM 记录开始时间
set start_time=%time%
echo 批量运行开始时间: %start_time%
echo.

REM 确保可执行文件存在
if not exist "competition_scheduler.exe" (
    echo 正在编译程序...
    call quick_start.bat
    if %ERRORLEVEL% neq 0 (
        echo ❌ 编译失败！
        pause
        exit /b 1
    )
)

REM 创建汇总报告文件
set summary_file=result-all\batch_summary.txt
echo === GMCM 2025 批量运行汇总报告 === > %summary_file%
echo 运行时间: %date% %time% >> %summary_file%
echo 测试模式: 快速测试 (减少迭代次数) >> %summary_file%
echo. >> %summary_file%

echo === 开始批量运行 ===
echo.

REM 循环运行每个算例
for %%c in (%cases%) do (
    echo [%%c] 开始处理...
    echo.
    
    REM 设置文件路径
    set "nodes_file=data\CSV-version\%%c_Nodes.csv"
    set "edges_file=data\CSV-version\%%c_Edges.csv"
    set "output_dir=result-all\%%c"
    
    REM 检查输入文件是否存在
    if not exist "!nodes_file!" (
        echo ❌ [%%c] 节点文件不存在: !nodes_file!
        echo [%%c] 状态: 跳过 (文件不存在) >> %summary_file%
        goto :continue
    )
    if not exist "!edges_file!" (
        echo ❌ [%%c] 边文件不存在: !edges_file!
        echo [%%c] 状态: 跳过 (文件不存在) >> %summary_file%
        goto :continue
    )
    
    REM 确保输出目录存在
    if not exist "!output_dir!" mkdir "!output_dir!"
    
    REM 记录单个案例开始时间
    set case_start=!time!
    
    REM 运行优化程序
    echo 运行命令: .\competition_scheduler.exe "!nodes_file!" "!edges_file!" "%%c" "!output_dir!"
    .\competition_scheduler.exe "!nodes_file!" "!edges_file!" "%%c" "!output_dir!"
    
    if !ERRORLEVEL! equ 0 (
        echo ✅ [%%c] 优化完成
        
        REM 日志文件现在直接写到正确位置，无需移动
        
        REM 记录到汇总报告
        echo [%%c] 状态: 成功完成 >> %summary_file%
        set "summary_file_path=!output_dir!\%%c_summary.txt"
        if exist "!summary_file_path!" (
            echo [%%c] 详细信息: >> %summary_file%
            type "!summary_file_path!" >> %summary_file%
        )
        echo. >> %summary_file%
        
    ) else (
        echo ❌ [%%c] 优化失败
        echo [%%c] 状态: 失败 (错误代码: !ERRORLEVEL!) >> %summary_file%
        echo. >> %summary_file%
    )
    
    REM 无需清理临时目录
    
    echo [%%c] 处理完成
    echo ========================================
    echo.
    
:continue
)

REM 记录结束时间
set end_time=%time%
echo === 批量运行完成 ===
echo 开始时间: %start_time%
echo 结束时间: %end_time%
echo.

echo 结果汇总:
echo - 输出目录: result-all\
echo - 汇总报告: %summary_file%
echo.

REM 显示各算例的状态
echo === 各算例结果状态 ===
for %%c in (%cases%) do (
    set "result_file=result-all\%%c\%%c_schedule.txt"
    if exist "!result_file!" (
        echo ✅ %%c: 成功完成
    ) else (
        echo ❌ %%c: 未找到结果文件
    )
)

echo.
echo === 汇总报告内容 ===
type %summary_file%

echo.
echo ✅ 批量运行任务完成！
echo 检查 result-all\ 目录查看所有结果
pause
